﻿using System;
using System.ServiceModel;
using System.Collections.Generic;

using SBPweb.PROvibe.Shared.Contracts.Services;
using SBPweb.PROvibe.Shared.Contracts.Content;

namespace SBPweb.PROvibe.Server.Framework.Content
{

    [ServiceContract(Namespace = "SBPweb.PROvibe.Server", SessionMode = SessionMode.Allowed)]
    public interface IContentProvider : SBPweb.PROvibe.Shared.Contracts.Content.IContentProvider
    {

        [OperationContract]
        new int GetCurrentPageId(ClientDescriptor clientDescriptor);

        [OperationContract]
        new int GetCurrentThemeManagerId(ClientDescriptor clientDescriptor);

        [OperationContract]
        new TypeDescriptor GetTypeDescriptorById(int typeId);

        [OperationContract]
        new IDictionary<string, object> GetFullSessionBag(ClientDescriptor clientDescriptor);

        [OperationContract]
        new void PutFullSessionBag(ClientDescriptor clientDescriptor, IDictionary<string, object> values);

        [OperationContract]
        new void AddSessionBagItem(ClientDescriptor clientDescriptor, string key, object value);

        [OperationContract]
        new void ChangeSessionBagItem(ClientDescriptor clientDescriptor, string key, object newValue);

        [OperationContract]
        new void RemoveSessionBagItem(ClientDescriptor clientDescriptor, string key);

    }

}